<?php

// 轮播控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Session;


class ShufflingController extends Controller
{
    // 轮播 列表
    public function index()
    {
        // 开始
        // 获取路由
        $route_array = request()->route()->getAction();
        $controller = explode("\\",$route_array['controller']);
        $result = explode("@",$controller[3]);
        // 控制器 	$result[0];
        // 方法 	$result[1];
        $auth_final = '';
        foreach( Session::get('auths') as $key=> $auth_info )
        {
            // 符合条件
            if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
            {
                $auth_final = true;
                break;
            }else
            {
                $auth_final = false;
            }
        }
        // 权限验证失败
        if( !$auth_final )
        {
            return redirect('/')->with( ['authinfo'=>'没有此项权限'] );
        }
        // 结尾
		// 获取 全部
    	$shufflings_info = DB::table('shuffling')
							-> select('id','status','next_url',DB::raw("replace( pic_url,'/images','".config('app.imgPath')."/images' ) as pic_url "  ))
							// 状态正常排序
							-> orderBy('status')
							// 再按ID
							-> orderBy('id','desc')
							-> paginate(5);
		
    	return view("shuffling.list", [  'title'=>'轮播列表', 'shufflings_info'=> $shufflings_info ]);
    }


    // 添加  编辑 轮播图
    public function create( $id='')
    {
        // 开始
        // 获取路由
        $route_array = request()->route()->getAction();
        $controller = explode("\\",$route_array['controller']);
        $result = explode("@",$controller[3]);
        // 控制器 	$result[0];
        // 方法 	$result[1];
        $auth_final = '';
        foreach( Session::get('auths') as $key=> $auth_info )
        {
            // 符合条件
            if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
            {
                $auth_final = true;
                break;
            }else
            {
                $auth_final = false;
            }
        }
        // 权限验证失败
        if( !$auth_final )
        {
            return redirect('/')->with( ['authinfo'=>'没有此项权限'] );
        }
        // 结尾
    	
		if( $id == '')
    	{
    		// 添加 页面
    		return view( "shuffling.add", [ 'title'=>"添加 轮播" ] );
    	}else
    	{
    		// 编辑 页面
    	 	$shuffling_info = DB::table('shuffling')
									-> where( 'id',$id )
									-> first();
			// 线上
			$str = str_replace("/images",config('app.imgPath')."/images",$shuffling_info->pic_url);
			$shuffling_info->pic_url = $str;
    		return view("shuffling.add", [ 'title'=> "修改 轮播", "shuffling_info"=>$shuffling_info ]);
    	}
    	
    }
	
	
	// 上传 轮播 图片
	public function uploadShuPic( $Files )
	{
		// 日期 作为新建目录名
		$time = date("Y-m-d");
		// 线上 上传目标目录 
		$dir= "../../image/images/lunbo/".$time;
		// 检测 文件 或者 目录 是否存在
		if( !file_exists($dir) )
		{	
			// 创建 目录
			mkdir( $dir,0777,true );
		}
		$filename_arr = array();
		foreach( $Files as $key => $file_info )
		{
			// 文件名
			$fileName = $file_info['name'];
			// 后缀
			$ext = pathinfo( $fileName,PATHINFO_EXTENSION );
			// 临时 目录
			$srcDir = $file_info['tmp_name'];
			// 新的 文件名
			$newName = rand(1,1000000).".".$ext;
			// 移动 成功
			$res = move_uploaded_file( $srcDir, $dir."/".$newName );
			$filename_arr[]="/images/lunbo/".$time."/".$newName;
		}
		
		// 返回文件路径 12242/2.jpg
		return $filename_arr;
		
	}
	
	// 执行 添加  编辑 
    public function docreate( $id='',Request $request)
    {
		$data = $request -> except('_token');

		
		if( empty( $data['next_url'] ) )
		{			
			$this->show_msg( '请填写链接地址' );
		}
		
		unset( $data['file'] );
		if( $id == '' )
		{
			// 检测图片
			if( !empty( $_FILES ) )
			{
				// 上传 轮播图片 返回 文件的存放路径
				$filename_arr = $this -> uploadShuPic( $_FILES );
			}else{
				$this->show_msg( '请上传轮播图片' );
			}
			
			$data['pic_url'] = $filename_arr[0];
			// 正常
			$data['status'] = 1;
			$data['create_at']=date("Y-m-d H:i:s",time());
			
			// 执行创建 
			$insert_id = DB::table('shuffling')->insertGetId( $data );
			// 成功
			if( $insert_id )
			{
				$this->show_msg( '添加轮播成功' );
			}else
			{
				$this->show_msg( '操作失败' );
			}
		}else
		{
			// 1.上传了新图
			if( !empty( $_FILES ) )
			{
				// 磁盘删除旧图
				$delRes = $this -> delPic( $id );
				if( !$delRes )
				{
					$this->show_msg( '删除旧图失败' );
				}
				// 删除 轮播表 旧数据
				$delete = DB::table('shuffling')
						-> where('id','=',$id)
						-> delete();
				if( !$delete )
				{
					$this->show_msg( '删除旧表数据失败' );
				}
				
				// 上传 轮播图片 返回 文件的存放路径
				$filename_arr = $this -> uploadShuPic( $_FILES );
				$data['pic_url'] = $filename_arr[0];
				// 正常
				$data['status'] = 1;
				$data['create_at']=date("Y-m-d H:i:s",time());
				// 重新插入
				$insert_id = DB::table('shuffling')->insertGetId( $data );
				if( $insert_id )
				{
					$this->show_msg( '修改 轮播 成功' );
				}else
				{
					$this->show_msg( '修改失败' );
				}
					
			}else
			{
				// 没上传新图
				// 3. 主表数据
				$update = DB::table('shuffling')
							-> where('id',$id)
							-> update( $data );	
				if( $update )
				{
					$this->show_msg( '修改 轮播 成功' );
				}else
				{
					$this->show_msg( '修改失败' );
				}
			
			}
			
			

			
		}

    }
	
	
	// 删除 磁盘文件夹 旧图
	public function delPic( $id='' )
	{
		// 获取图片地址 
		$pic_info = DB::table('shuffling')
						-> where( 'id','=',$id )
						-> first();
		// 线上
		$file= "../../image".$pic_info->pic_url;
		// 文件存在
		if( file_exists($file) )
		{
			unlink($file);
			return true;
		}else
		{
			return false;
		}
	
	}

    // 修改 轮播图 过期
    public function overDate( $id,Request $request )
    {
    	
		$res = DB::table('shuffling')
			    	->where('id',$id)
					// 过期
			    	->update( ['status'=>2] );

    	if($res)
		{
			return 1;
		}else
		{
			return 0;
		}

    }
}
